package com.newsnetwork.article.service;

import com.newsnetwork.pojo.ArticlePublicationStatus;
import com.newsnetwork.pojo.Category;
import com.newsnetwork.pojo.bo.NewArticleBO;
import com.newsnetwork.utils.PagedGridResult;
import freemarker.template.TemplateException;

import java.io.IOException;
import java.util.Date;

/**
 * @author DingNing,HuangDekai
 * @date 2022/11/18 15:36
 * @Description:
 */
public interface ArticleService {
    /**
     *     发布文章
     */
    ArticlePublicationStatus createArticle(NewArticleBO newArticleBO, Category category);
    /**
     * 更新定时发布为即时发布
     */
    void updateAppointToPublish();
    /**
     * 更新单条文章为即时发布
     */
    void updateArticleToPublish(String articleId);

    /**
     * 查询文章发布状态
     */
    int queryArticleAppoint(String articleId);
    /**
     * 将文章html更新到gridFS, 关联文章和 GridFS 的html文件id
     * @param articleId 文章id
     */
    void updateArticleToGridFS(String articleId) throws TemplateException, IOException;

    /**
     * 用户中心 - 查询我的文章列表
     */
    PagedGridResult queryMyArticleList(String userId,
                                              String keyword,
                                              Integer status,
                                              Date startDate,
                                              Date endDate,
                                              Integer page,
                                              Integer pageSize);
    /**
     * 更改文章的状态
     */
    void updateArticleStatus(String articleId, Integer pendingStatus);

    /**
     * 管理员查询文章列表
     */
    PagedGridResult queryAllArticleListAdmin(Integer status, Integer page, Integer pageSize);

    /**
     * 删除文章
     */
    void deleteArticle(String userId, String articleId);

    /**
     * 撤回文章
     */
    void withdrawArticle(String userId, String articleId);

}
